package com.tul.vapp.servicecenter.service;

import com.tul.vapp.servicecenter.entity.App;
import com.tul.vapp.servicecenter.entity.AppVo;

import java.util.List;

/**
 * IAppService
 *
 * @author wwxiang
 * @since 2018/1/3.
 */
public interface IAppService {
    /**
     * 获取应用
     *
     * @return 应用数据
     */
    List<App> getApps();

    /**
     * 获取应用vo对象
     *
     * @return 应用vo对象
     */
    List<AppVo> getAppVos();

    /**
     * 获取所有已发布的应用数据
     *
     * @return 已发布的数据
     */
    List<App> getReleaseApps();

    /**
     * 获取应用
     *
     * @param appId appId
     * @return 应用数据
     */
    App getApp(String appId);

    /**
     * 级联删除
     *
     * @param appId 应用id
     */
    void deleteCascade(String appId);

    /**
     * 发布APP
     *
     * @param appId 应用id
     */
    void publish(String appId);

    /**
     * 将DB中所有的app数据回退
     *
     * @param appId 应用id
     */
    void rollback(String appId);

    /**
     * 一致性检查，确保发布表和操作表一致
     */
    void sanityCheck();
}
